home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / sggsvp.z / sggsvp
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. SSSSGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))                                                          SSSSGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SGGSVP - compute orthogonal matrices U, V and Q such that   N-K-L K L
  10.      U'*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE SGGSVP( JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB,
  14.                         K, L, U, LDU, V, LDV, Q, LDQ, IWORK, TAU, WORK, INFO )
  15.  
  16.          CHARACTER      JOBQ, JOBU, JOBV
  17.  
  18.          INTEGER        INFO, K, L, LDA, LDB, LDQ, LDU, LDV, M, N, P
  19.  
  20.          REAL           TOLA, TOLB
  21.  
  22.          INTEGER        IWORK( * )
  23.  
  24.          REAL           A( LDA, * ), B( LDB, * ), Q( LDQ, * ), TAU( * ), U(
  25.                         LDU, * ), V( LDV, * ), WORK( * )
  26.  
  27. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  28.      SGGSVP computes orthogonal matrices U, V and Q such that
  29.                    L ( 0     0   A23 )
  30.                M-K-L ( 0     0    0  )
  31.  
  32.                       N-K-L  K    L
  33.              =     K ( 0    A12  A13 )  if M-K-L < 0;
  34.                  M-K ( 0     0   A23 )
  35.  
  36.                     N-K-L  K    L
  37.       V'*B*Q =   L ( 0     0   B13 )
  38.                P-L ( 0     0    0  )
  39.  
  40.      where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular upper
  41.      triangular; A23 is L-by-L upper triangular if M-K-L >= 0, otherwise A23
  42.      is (M-K)-by-L upper trapezoidal.  K+L = the effective numerical rank of
  43.      the (M+P)-by-N matrix (A',B')'.  Z' denotes the transpose of Z.
  44.  
  45.      This decomposition is the preprocessing step for computing the
  46.      Generalized Singular Value Decomposition (GSVD), see subroutine SGGSVD.
  47.  
  48.  
  49. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  50.      JOBU    (input) CHARACTER*1
  51.              = 'U':  Orthogonal matrix U is computed;
  52.              = 'N':  U is not computed.
  53.  
  54.      JOBV    (input) CHARACTER*1
  55.              = 'V':  Orthogonal matrix V is computed;
  56.              = 'N':  V is not computed.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))                                                          SSSSGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      JOBQ    (input) CHARACTER*1
  75.              = 'Q':  Orthogonal matrix Q is computed;
  76.              = 'N':  Q is not computed.
  77.  
  78.      M       (input) INTEGER
  79.              The number of rows of the matrix A.  M >= 0.
  80.  
  81.      P       (input) INTEGER
  82.              The number of rows of the matrix B.  P >= 0.
  83.  
  84.      N       (input) INTEGER
  85.              The number of columns of the matrices A and B.  N >= 0.
  86.  
  87.      A       (input/output) REAL array, dimension (LDA,N)
  88.              On entry, the M-by-N matrix A.  On exit, A contains the
  89.              triangular (or trapezoidal) matrix described in the Purpose
  90.              section.
  91.  
  92.      LDA     (input) INTEGER
  93.              The leading dimension of the array A. LDA >= max(1,M).
  94.  
  95.      B       (input/output) REAL array, dimension (LDB,N)
  96.              On entry, the P-by-N matrix B.  On exit, B contains the
  97.              triangular matrix described in the Purpose section.
  98.  
  99.      LDB     (input) INTEGER
  100.              The leading dimension of the array B. LDB >= max(1,P).
  101.  
  102.      TOLA    (input) REAL
  103.              TOLB    (input) REAL TOLA and TOLB are the thresholds to
  104.              determine the effective numerical rank of matrix B and a subblock
  105.              of A. Generally, they are set to TOLA = MAX(M,N)*norm(A)*MACHEPS,
  106.              TOLB = MAX(P,N)*norm(B)*MACHEPS.  The size of TOLA and TOLB may
  107.              affect the size of backward errors of the decomposition.
  108.  
  109.      K       (output) INTEGER
  110.              L       (output) INTEGER On exit, K and L specify the dimension
  111.              of the subblocks described in Purpose.  K + L = effective
  112.              numerical rank of (A',B')'.
  113.  
  114.      U       (output) REAL array, dimension (LDU,M)
  115.              If JOBU = 'U', U contains the orthogonal matrix U.  If JOBU =
  116.              'N', U is not referenced.
  117.  
  118.      LDU     (input) INTEGER
  119.              The leading dimension of the array U. LDU >= max(1,M) if JOBU =
  120.              'U'; LDU >= 1 otherwise.
  121.  
  122.      V       (output) REAL array, dimension (LDV,M)
  123.              If JOBV = 'V', V contains the orthogonal matrix V.  If JOBV =
  124.              'N', V is not referenced.
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))                                                          SSSSGGGGGGGGSSSSVVVVPPPP((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      LDV     (input) INTEGER
  141.              The leading dimension of the array V. LDV >= max(1,P) if JOBV =
  142.              'V'; LDV >= 1 otherwise.
  143.  
  144.      Q       (output) REAL array, dimension (LDQ,N)
  145.              If JOBQ = 'Q', Q contains the orthogonal matrix Q.  If JOBQ =
  146.              'N', Q is not referenced.
  147.  
  148.      LDQ     (input) INTEGER
  149.              The leading dimension of the array Q. LDQ >= max(1,N) if JOBQ =
  150.              'Q'; LDQ >= 1 otherwise.
  151.  
  152.      IWORK   (workspace) INTEGER array, dimension (N)
  153.  
  154.      TAU     (workspace) REAL array, dimension (N)
  155.  
  156.      WORK    (workspace) REAL array, dimension (max(3*N,M,P))
  157.  
  158.      INFO    (output) INTEGER
  159.              = 0:  successful exit
  160.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  161.  
  162. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  163.      The subroutine uses LAPACK subroutine SGEQPF for the QR factorization
  164.      with column pivoting to detect the effective numerical rank of the a
  165.      matrix. It may be replaced by a better rank determination strategy.
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.